import json
from openpyxl import Workbook


def load_json_result(json_path):
    sort_txt = json_path + '/sort.txt'
    with open(sort_txt, 'r', encoding='utf-8') as f:
        jsons = [x.strip() for x in f.readlines()]
    results = []
    for j in jsons:
        with open(f'.code_cache/{j}', 'r', encoding='utf-8') as f:
            result = json.load(f)
        results.append(result)
    return results


def write_result_excel(results):
    wb = Workbook()
    ws = wb.active
    ws.append(['类型', '文章名称', '内容规范性', '', '', '',
               '文档描述清晰性', '', '', '',
               '示例代码可用性', '', '', '',
               '示例代码实用性', '', '', '',
               '示例代码规范性', '', '', '',
               '官网信息体验', '', '', '',
               '内容查找便捷性', '', '', '',
               '链接正确性和准确性', '', ''])
    ws.merge_cells('c1:f1')
    ws.merge_cells('g1:j1')
    ws.merge_cells('k1:n1')
    ws.merge_cells('o1:r1')
    ws.merge_cells('s1:v1')
    ws.merge_cells('aa1:ad1')
    ws.merge_cells('ae1:ag1')
    ws.append(['', '', '评分', '是否包含关键错误', '主要问题', '改进建议',
               '评分', '是否包含关键错误', '主要问题', '改进建议',
               '评分', '是否包含关键错误', '主要问题', '改进建议',
               '评分', '是否包含关键错误', '主要问题', '改进建议',
               '评分', '是否包含关键错误', '主要问题', '改进建议',
               '评分', '是否包含关键错误', '主要问题', '改进建议',
               '评分', '是否包含关键错误', '主要问题', '改进建议',
               '是否有链接问题', '问题链接', '问题类型'
               ])
    ws.merge_cells('a1:a2')
    ws.merge_cells('b1:b2')
    for result in results:
        current_row = [result['类型'], result['文章名称']]
        list1 = [result['内容规范性']['评分'], result['内容规范性']['是否含关键错误'],
                 '\n'.join(result['内容规范性']['主要问题']), '\n'.join(result['内容规范性']['改进建议'])]
        list2 = [result['文档描述清晰性']['评分'], result['文档描述清晰性']['是否含关键错误'],
                 '\n'.join(result['文档描述清晰性']['主要问题']), '\n'.join(result['文档描述清晰性']['改进建议'])]
        list3 = [result['示例代码可用性']['评分'], result['示例代码可用性']['是否含关键错误'],
                 '\n'.join(result['示例代码可用性']['主要问题']), '\n'.join(result['示例代码可用性']['改进建议'])]
        list4 = [result['示例代码实用性']['评分'], result['示例代码实用性']['是否含关键错误'],
                 '\n'.join(result['示例代码实用性']['主要问题']), '\n'.join(result['示例代码实用性']['改进建议'])]
        list5 = [result['示例代码规范性']['评分'], result['示例代码规范性']['是否含关键错误'],
                 '\n'.join(result['示例代码规范性']['主要问题']), '\n'.join(result['示例代码规范性']['改进建议'])]
        list6 = [result['官网信息体验']['评分'], result['官网信息体验']['是否含关键错误'],
                 '\n'.join(result['官网信息体验']['主要问题']), '\n'.join(result['官网信息体验']['改进建议'])]
        list7 = [result['内容查找便捷性']['评分'], result['内容查找便捷性']['是否含关键错误'],
                 '\n'.join(result['内容查找便捷性']['主要问题']), '\n'.join(result['内容查找便捷性']['改进建议'])]
        current_row = current_row + list1 + list2 + list3 + list4 + list5 + list6 + list7
        print(current_row)
        ws.append(current_row)
    wb.save('1.xlsx')


def write_result_excel_v2(results):
    wb = Workbook()
    ws = wb.active
    ws.append(['类型', '文章名称', '问题类型', '评分', '是否含关键错误', '主要问题', '改进建议'])
    for result in results:
        current_row = [result['类型'], result['文章名称']]
        if result.get('error'):
            ws.append(current_row)
            continue
        for k, v in result.items():
            if isinstance(v, dict):
                ws.append(current_row + [k, v['评分'], v['是否含关键错误'], '\n\n'.join(v['主要问题']),
                                         '\n\n'.join(v['改进建议'])])
    wb.save('result_ai.xlsx')


if __name__ == '__main__':
    all_results = [load_json_result('.code_cache/dbd7790bcd23fde7607101ef6a633779.json')]
    write_result_excel(all_results)
